import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
import {
  setToken,
  getToken
} from '@/utils/auth.js';
import {
  userInfoAPI
} from '@/api/index.js';
import { delToken } from '@/utils/auth.js';
const store = new Vuex.Store({
  state: {
    // 如果给默认值的时候要考虑能不能取到值，不能取到给默认值
    tokenObj: getToken() || {},
    // 保存用户信息的变量
    userInfo: {}
  },
  mutations: {
    // 提供一个修改的方法
    saveToken(state, payload) {
      // 把传进来的token对象赋值给tokenObj
      state.tokenObj = payload
      // 存到本地存储
      setToken(payload)
    },
    // 提供一个把数据保存到vuex的方法
    setUserInfo(state, payload) {
      state.userInfo = payload
    },
    // 提供一个清空vuex和localStoryage里的token的方法
    logout(state) {
      state.tokenObj = {}
      state.userInfo = {}
      delToken()
    }
  },
  actions: {
    async reqUserInfo(context) {
      // 判断vuex里的数据是否有值
      if (!context.state.userInfo.name) {
        // 发起请求获取用户信息
        let res = await userInfoAPI()
        // console.log(res)
        // 把数据保存到vuex中
        context.commit('setUserInfo', res.data.data)
      }
    }
  }
});

export default store